package com.lanyan.system.service.impl;

import java.util.List;
import java.util.stream.Collectors;
        import com.lanyan.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.lanyan.common.utils.StringUtils;
import com.lanyan.system.mapper.CourierMapper;
import com.lanyan.system.domain.Courier;
import com.lanyan.system.domain.vo.CourierVo;
import com.lanyan.system.service.ICourierService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;

/**
 * 配送员Service业务层处理
 *
 * @author lanyan
 * @date 2024-11-26
 */
@Service
public class CourierServiceImpl  extends ServiceImpl<CourierMapper,Courier> implements ICourierService

{
    @Autowired
    private CourierMapper courierMapper;

    /**
     * 查询配送员
     *
     * @param courierId 配送员主键
     * @return 配送员
     */
    @Override
    public Courier selectCourierByCourierId(Long courierId)
    {
        return this.getById(courierId);
    }

    /**
     * 查询配送员Vo列表
     *
     * @param courier 配送员
     * @return 配送员
     */
    @Override
    public List<CourierVo> selectCourierVoList(Courier courier)
    {
        return selectCourierList(courier)
                .stream()
                .map(x -> (CourierVo)x)
                .collect(Collectors.toList());
    }
    /**
     * 查询配送员列表
     *
     * @param courier 配送员
     * @return 配送员
     */
    @Override
    public List<Courier> selectCourierList(Courier courier)
    {
        LambdaQueryChainWrapper<Courier> wrapper = this.lambdaQuery().eq(Courier::getDelFlag,"0");
        if (StringUtils.isNotEmpty(courier.getName())) {
            wrapper.like(Courier::getName, courier.getName());
        }
        if (StringUtils.isNotEmpty(courier.getAvatar())) {
            wrapper.eq(Courier::getAvatar, courier.getAvatar());
        }
        if (StringUtils.isNotEmpty(courier.getPhone())) {
            wrapper.eq(Courier::getPhone, courier.getPhone());
        }
        if (StringUtils.isNotEmpty(courier.getGender())) {
            wrapper.eq(Courier::getGender, courier.getGender());
        }
        if (courier.getEstateId() != null) {
            wrapper.eq(Courier::getEstateId, courier.getEstateId());
        }
        if (StringUtils.isNotEmpty(courier.getBuildings())) {
            wrapper.eq(Courier::getBuildings, courier.getBuildings());
        }
        if (StringUtils.isNotEmpty(courier.getLoginName())) {
            wrapper.like(Courier::getLoginName, courier.getLoginName());
        }
        if (StringUtils.isNotEmpty(courier.getLoginPassword())) {
            wrapper.eq(Courier::getLoginPassword, courier.getLoginPassword());
        }
        if (StringUtils.isNotEmpty(courier.getState())) {
            wrapper.eq(Courier::getState, courier.getState());
        }
        if (courier.getEvaluateTotal() != null) {
            wrapper.eq(Courier::getEvaluateTotal, courier.getEvaluateTotal());
        }
        if (courier.getEvaluateSum() != null) {
            wrapper.eq(Courier::getEvaluateSum, courier.getEvaluateSum());
        }
        return wrapper.list();
    }

        /**
         * 新增配送员
         *
         * @param courier 配送员
         * @return 结果
         */
    @Override
        public boolean insertCourier(Courier courier)
        {
                    courier.setCreateTime(DateUtils.getNowDate());
                return this.save(courier);
        }

        /**
         * 修改配送员
         *
         * @param courier 配送员
         * @return 结果
         */
    @Override
        public boolean updateCourier(Courier courier)
        {
                    courier.setUpdateTime(DateUtils.getNowDate());
            return this.updateById(courier);
        }

        /**
         * 批量删除配送员
         *
         * @param courierIds 需要删除的配送员主键
         * @return 结果
         */
    @Override
        public boolean deleteCourierByCourierIds(Long[] courierIds)
        {
            return this.lambdaUpdate().set(Courier::getDelFlag,"1").in(Courier::getCourierId,courierIds).update();
        }

        /**
         * 删除配送员信息
         *
         * @param courierId 配送员主键
         * @return 结果
         */
    @Override
        public boolean deleteCourierByCourierId(Long courierId)
        {
            return this.lambdaUpdate().set(Courier::getDelFlag,"1").eq(Courier::getCourierId,courierId).update();
        }
    }
